import { request} from "../../request/index.js"

Page({

  /**
   * 页面的初始数据
   */
  data: {
    address:{},
    cart:[],
    totalPrice:0,
    totalNum:0
  },



  // 设置购物车状态的同时 同时计算 底部工具栏的数据 全选 总价格 购买的数量
  setCart(cart){

    //更新总金额计算
    let totalPrice=0;
    let totalNum=0;
    cart.forEach(v=>{
      if(v.checked){
        totalPrice+=v.num*v.goods_price;
        totalNum+=v.num;
      }
    });
    this.setData({
      cart,
      totalPrice,
      totalNum
    });
  },

  //点击支付
  async handleOrderPay(){
    try {
      //判断缓存中有无token
      const token=wx.getStorageSync("token");
      //判断
      if(!token){
        wx.navigateTo({
          url: '/pages/auth/index'
        });
        return
      }
      //创建订单
      // 创建请求头参数
      // const header={Authorization:token};
      // 准备请求体参数
      const order_price=this.data.totalPrice;
      // 
      const consignee_addr=this.data.address.all;
      const cart=this.data.cart;
      let goods=[];
      cart.forEach(v=>goods.push({
        goods_id:v.goods_id,
        goods_number:v.num,
        goods_price:v.goods_price
      }))
      const orderParams={order_price,consignee_addr,goods};
      // 准备发送请求 创建订单 获取订单编号
      const {order_number}=await request({url:"/my/orders/create",method:"POST",data:orderParams});
      
      //发起预支付接口
      const pay=await request({url:"/my/orders/req_unifiedorder",method:"POST",data:{order_number}});
      wx.requestPayment({
        ...pay,
        success: (pay) => {
          
        },
        fail: () => {},
        complete: () => {}
      });
      //查询后台订单状态
      const res=await request({url:"/my/orders/chkOrder",method:"POST",data:{order_number}});

      //小窗口提示 支付成功
      console.log(res);
      wx.showToast({
        title: '支付成功',
        icon: 'none'
      });

      //删除缓存中已经支付的商品
      let newCart=wx.getStorageSync("cart");
      newCart=newCart.filter(v=>!v.checked);
      wx.setStorageSync("cart",newCart);

      //跳转到订单页面
      wx.navigateTo({
        url: '/pages/order/index' 
      });
        
    } catch (error) {
      console.log(error);
      wx.showToast({
        title: '支付失败',
        icon: 'none'
      });
    }
   
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   * 1
   *    1 获取缓存中的购物车数组
   *    2 把购物车数据填充到data中
   * 
   * 2 全选
   */
  onShow: function () {
    //获取缓存中的收货地址信息
    const address=wx.getStorageSync("address");
    //获取缓存中的购物车数据
    const cart=wx.getStorageSync("cart")||[];

    //过滤后的购物车数组
    let checkedCart=cart.filter(v=>v.checked);

    //计算全选
    // const allChecked=cart.length?cart.every(v=>v.checked):false; //为了提升性能
    let allChecked=true;

    this.setData({address});
    //算总金额
    this.setCart(checkedCart);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

  